<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  
</body>
<script>
  /* 
    ○ 当调用then的promise实例还是pending状态的时候,then返回的是pending状态的promise实例
  // */
  // const p1 =new Promise((resolve,reject)=>{
  //   resolve(`success`)
  //   reject(`11`)
  // })
  // console.log(`p1`,p1);

  //  const p2=p1.then(()=>{
  //   console.log(p1.then(()=>{}));
  // })
  // console.log(`p2`,p2);


  // then默认返回的是fulfilled状态的promise实例,值是当前回调函数return的值
  // const p1 =new Promise((resolve,reject)=>{
  //   // resolve(`success`)
  //   reject(`失败`)
  // })
  // console.log(`p1`,p1);
  //  const p2=p1.then(()=>{
  // })
  // console.log(`p2`,p2);

  // //then的参数是回调函数 没有写返回值 默认undefined


  // 当then的回调返回一个promise实例的时候,then的返回值状态与值 和 返回的promise实例保持一致
  // const p1 =new Promise((resolve,reject)=>{
  //   resolve(`success`)
  //   // reject(`失败`)
  // })
  // console.log(`p1`,p1);
  //  const p2=p1.then(()=>{
  //   return new Promise((resolve,reject)=>{
  //     resolve(11)
  //   })
  // })
  // console.log(`p2`,p2);


  // 当then的回调中发生报错,则then直接返回rejected状态的promise实例,值是错误信息


  //   const p1 =new Promise((resolve,reject)=>{
  //   // resolve(`success`)
  //   reject(`失败`)
  //   throw new Error
  // })
  // console.log(`p1`,p1);
  //  const p2=p1.then((value)=>{
    
  // })
  // console.log(`p2`,p2);


  // 当then中没有处理调用then的promise实例的函数时,当前的promise实例直接穿透

//    const p1 =new Promise((resolve,reject)=>{
//     resolve(`success`)
//     // reject(`失败`)
//   })
//   console.log(`p1`,p1);
//    const p2=p1.then(()=>{
//   })
//   console.log(`p2`,p2);
//   const p3=p2
// console.log(`p3`,p3);

</script>
</html>